#ifndef __MODBUS_MASTER_H
#define __MODBUS_MASTER_H

#include "cm_common.h" // 包含通用头文件

#include "uart_service.h" // 包含串口服务头文件

#include "ring_buffer.h" // 引入 RingBuffer 类型定义

#include "utils.h" // 包含通用工具类头文件

#include "com_user_data.h"

// modbus主机模式 组件初始化任务
void modbus_master_init_task(void *arg);

// 轮询任务
void MB_PollTask(void *arg);

// 状态机解析任务
void MB_StateMachineTask(void *arg);

// 发送请求
void MB_SendRequest(uint8_t slave, uint8_t func, uint16_t reg, uint16_t num, const uint8_t *data);

/**
 * @brief Modbus 数据传输方向
 */
typedef enum
{
    MB_DATA_RECEIVE, // 0: 接收数据
    MB_DATA_SEND     // 1: 发送数据
} mb_data_direction_t;
/**
 * @brief 打印Modbus发送或接收的数据日志 (使用枚举)
 *
 * @param dir 数据方向，可以是 MB_DATA_SEND 或 MB_DATA_RECEIVE
 * @param len 数据长度
 * @param buf 数据缓冲区指针
 */
void modbus_log_data(mb_data_direction_t dir, uint16_t len, const uint8_t *buf);

#endif
